<?php
namespace Services;
class BaseService
{

    /**
     * 参数数组
     * @var array
     */
    public  $params = [];

    /**
     * 设置全部参数
     * @param array $params
     * @return self
     */
    public function setParams(array $params)
    {
        //如果存在成员变量,则赋值
        foreach ($params as $k => $v) {
            $this->params[$k] = $v;
        }
        return $this;
    }

    /**
     * 设置单个参数
     * @param $key
     * @param $value
     * @return self
     */
    public function setParam($key, $value)
    {
        $this->params[$key] = $value;
        return $this;
    }

    /**
     * 获取所有参数
     * @return array
     */
    public function getParams(): array
    {
        return $this->params;
    }

    /**
     * 删除指定参数
     * @param $key
     * @param $default
     * @return array|\ArrayAccess|mixed
     */
    public function popParam($key, $default = null)
    {
        $param = $this->getParam($key, $default);
        unset($this->params[$key]);
        return $param;
    }

    /**
     * 获取单个参数
     * @param $key
     * @param null $default
     * @return array|\ArrayAccess|mixed
     */
    public function getParam($key, $default = null)
    {
        return arr_get($this->params, $key, $default);
    }
}
